Accurate time synchronization between devices at different locations is required in a variety of computing applications. Example applications include pinpointing a geographic location of a mobile device using a global navigation satellite system (GNSS) or timing for sending messages within a wired or wireless network such that there is no interference between messages. These applications can require time synchronization between devices to be within milliseconds, microseconds, or even sub microsecond ranges of each other in order for a function to be accurately performed.
Because clocks with extreme accuracy are expensive, fragile, and/or are difficult to maintain, consumer devices generally include less expensive and less accurate clocks. For example, many GNSS receiver units, mobile phones, personal digital assistants (PDAs), and other devices include less accurate clocks, such as a quartz based clock. These less accurate clocks, which may be adequate for some purposes, such as for calendaring user events, generally lose or gain many nanoseconds or microseconds within short periods of time. Thus, dependence on these clocks alone in scenarios that require high accuracy may significantly limit or completely impede any ability to perform certain functions.